import { CommonModule } from '@angular/common';
import { NgModule } from '@angular/core';
import { FormsModule, ReactiveFormsModule } from '@angular/forms';
import { NbAuthModule } from '@nebular/auth';
import { NbEvaIconsModule } from '@nebular/eva-icons';
import { COMPONENTS } from './components';

import {
  NbActionsModule,
  NbAlertModule,
  NbButtonModule,
  NbCardModule,
  NbCheckboxModule,
  NbChatModule,
  NbContextMenuModule,
  NbDatepickerModule,
  NbDialogModule,
  NbIconModule,
  NbInputModule,
  NbLayoutModule,
  NbListModule,
  NbPopoverModule,
  NbRadioModule,
  NbSearchModule,
  NbSelectModule,
  NbStepperModule,
  NbToggleModule,
  NbTreeGridModule,
  NbUserModule,
  NbFormFieldModule,
} from '@nebular/theme';

import { AutoCompleteModule } from 'primeng/autocomplete';
import { SidebarModule } from 'primeng/sidebar';
import { SplitterModule } from 'primeng/splitter';

const NB_MODULES = [
  NbIconModule,
  NbListModule,
  NbCardModule,
  NbChatModule,
  NbUserModule,
  NbAuthModule,
  NbRadioModule,
  NbLayoutModule,
  NbInputModule,
  NbButtonModule,
  NbActionsModule,
  NbStepperModule,
  NbEvaIconsModule,
  NbCheckboxModule,
  NbSearchModule,
  NbPopoverModule,
  NbTreeGridModule,
  NbDatepickerModule,
  NbContextMenuModule,
  NbAlertModule,
  NbDialogModule,
  NbSelectModule,
  NbToggleModule,
  NbFormFieldModule,
];

const PRIMENG_MODULES = [
  AutoCompleteModule,
  SidebarModule,
  SplitterModule,
];

const MODULES = [...PRIMENG_MODULES, ...NB_MODULES, CommonModule, FormsModule, ReactiveFormsModule];

@NgModule({
  imports: [...MODULES],
  declarations: [...COMPONENTS],
  exports: [...MODULES, ...COMPONENTS],
})
export class ChatCommonModule {}
